Skip to main content

马里奥 - CS50x 2023

开始

打开 VS Code

首先点击终端窗口内部,然后单独执行 cd。 你会发现终端提示符类似如下:

点击终端窗口内部,然后执行

wget https://cdn.cs50.net/2022/fall/psets/1/mario-more.zip

然后按 Enter 键,以便在你的 codespace 中下载一个名为 mario-more.zip 的 ZIP 文件。 注意wget命令后URL前的空格,以及其他任何字符都不能省略!

现在执行

来创建名为mario-more的文件夹。 你不再需要 ZIP 文件,所以你可以执行

并在提示符后输入y,然后按回车键删除下载的ZIP文件。

现在输入

然后按回车键进入该目录。 现在你的终端提示符应该类似如下。

如果一切顺利,你应该执行

并看到一个名为 mario.c 的文件。 执行 code mario.c 应该会打开该文件,你将在其中输入此问题集的代码。 如果没有,请回顾你的步骤,看看你哪里出错了!

世界 1-1

在任天堂的超级马里奥兄弟游戏中,第一大关的第一小关的开头,马里奥必须跳过相邻的块金字塔,如下所示。

马里奥跳过相邻金字塔的截图

让我们用 C 语言重新创建这些金字塔,尽管是用文本形式,使用井号 (#) 代表砖块,如下所示。 每个井号都比其宽度略高,因此金字塔整体看起来也会比实际宽度更高。

   #  #
## ##
### ###
#### ####

我们将编写的程序将被称为 mario。 我们允许用户通过输入一个1到8之间的正整数来决定金字塔的高度。

如果用户在提示时输入 8,程序可能会这样工作:

$ ./mario
Height: 8
# #
## ##
### ###
#### ####
##### #####
###### ######
####### #######
######## ########


如果用户在提示时输入 4,程序可能会这样工作:

$ ./mario
Height: 4
# #
## ##
### ###
#### ####

如果用户在提示时输入 2,程序可能会这样工作:

$ ./mario
Height: 2
# #
## ##

如果用户在提示时输入 1,程序可能会这样工作:

如果用户输入的不是1到8之间的正整数,程序应不断提示用户重新输入,直到输入正确为止。

$ ./mario
Height: -1
Height: 0
Height: 42
Height: 50
Height: 4
# #
## ##
### ###
#### ####

注意,相邻金字塔之间的间距等于两个井号的宽度,与金字塔高度无关。

打开你的 mario.c 文件来实现这个问题,如上所述!

演练

如何测试你的代码

当输入以下值时,你的代码是否能正常工作?

  • -1(或其他负数)?
  • 0?
  • 18
  • 9 或其他正数?
  • 字母或单词?
  • 没有输入任何内容,直接按了回车键?

您还可以执行以下命令来使用 check50 评估代码的正确性。 但请务必自己编译和测试它!

check50 cs50/problems/2023/x/mario/more

执行以下命令,使用style50来评估代码风格。

如何提交

在您的终端中,执行以下命令来提交您的工作。

submit50 cs50/problems/2023/x/mario/more